前面介紹了錯誤處理以及goroutine,
今天來看看,當goroutine裡面出狀況時,
golang是否能夠有效的處理錯誤情況.
package main
import (
	"fmt"
	"time"
)
func main() {
	fmt.Println("主函式啟動!")
	// 啟動一個 goroutine
	go 玉面飛鷹()
	// 啟動另一個 goroutune
	go 油達大師()
	fmt.Println("主函式睡眠中!")
	time.Sleep(time.Second * 12)
	fmt.Println("主函式結束!")
}
func 玉面飛鷹() {
	// 先把救兵安排好
	defer func() {
		if e := recover(); e != nil {
			fmt.Println("月亮的使者‧月光刑警!還有助手美茄子刑警,一同登場!")
			fmt.Printf("出包情況是: %s\n", e)
		}
	}()
	fmt.Println("大家好! 我是人見人愛,花見花開的玉面飛鷹!")
	fmt.Println("看我飛~~~~~ 噗~ 噗~噗~ 展翅飛翔~!")
	time.Sleep(time.Second * 5)
	panic("玉面飛鷹肚子餓,沒力!")
	fmt.Println("報告! 玉面飛鷹到達目的地!") // 玉面飛鷹實際上沒飛到
}
func 油達大師() {
	fmt.Println("師大達油是我! 好家大!")
	time.Sleep(time.Second * 1)
	fmt.Println("砍!!!")
	fmt.Println("工收完砍!")
}
執行結果:
./hello54 
主函式啟動!
主函式睡眠中!
大家好! 我是人見人愛,花見花開的玉面飛鷹!
看我飛~~~~~ 噗~ 噗~噗~ 展翅飛翔~!
師大達油是我! 好家大!
砍!!!
工收完砍!
月亮的使者‧月光刑警!還有助手美茄子刑警,一同登場!
出包情況是: 玉面飛鷹肚子餓,沒力!
主函式結束!